import json


print('欢迎来到爱坤系统，请输入您的操作指令')
print('进入注册请输入：1')
print('进入登录请输入：2')
print('进入修改密码请输入：3')
print('进入删除用户请输入：4')
print('退出系统请输入：0')
# 读取数据
f = open('user.json', 'r', encoding='utf-8')
user = json.load(f)
f.close()
while True:
    shu = input('请输入指令')
    # 退出程序
    if shu == '0':
        break
    # 注册
    elif shu == '1':
        shuname = input('请输入用户名')
        if len(shuname) < 6 or len(shuname) > 20:
            print('用户名长度必须在6-20位之间')
        elif shuname in user:
            print('用户名已被注册，建议修改密码或登录')
        else:
            # -- 密码限制条件：密码必须包括大、小写字母.数字.其它,以上四种至少三种
            shupass = input('请输入密码')

            from defchar import user111     # 从头 defchar 里面调用 user111 函数
            user111(shupass)                # shupass 返回 True或者 False
            if user111(shupass):            # 判断 shupass 是 True 还是 False
                user[shuname] = shupass     #将shuname和shupass写入字典

                # 如果shupass返回Ture则写入数据
                user.update()
                f = open('user.json', 'w', encoding='utf-8')  # 以写的方式打开文件
                json.dump(user, f, ensure_ascii=False)
                f.close()  # 关闭文件
                print('注册成功！')

            else:
                print('密码必须包括大、小写字母.数字.其它,以上四种至少三种')
            # shupass = input('请输入密码')
            # b = [0, 0, 0, 0]
            # for i in shupass:
            #     if i.isupper():
            #         b[0] = 1
            #     elif i.islower():
            #         b[1] = 1
            #     elif i.isdigit():
            #         b[2] = 1
            #     else:
            #         b[3] = 1
            # if b.count(1) > 2 and len(shupass) >= 8:
            #     user[shuname] = shupass
            #     print('注册成功！')
            # else:
            #     print('密码必须包括大、小写字母.数字.其它,以上四种至少三种')

        # 写入数据
        # user.update()
        # f = open('user.json', 'w', encoding='utf-8')  # 以写的方式打开文件
        # json.dump(user, f, ensure_ascii=False)
        # f.close()  # 关闭文件

    # 登录
    elif shu == '2':
        shudname = input('请输入用户名')
        if shudname not in user:
            print('该账号没有注册，请注册')
        else:
            shudpass = input('请输入密码')
            if user[shudname] == shudpass:
                print("登录成功！")
            else:
                print('密码错误')

    # 修改密码
    elif shu == '3':
        shuname = input('请输入用户名')
        if len(shuname) < 6 or len(shuname) > 20:
            print('用户名长度必须在6-20位之间')
        elif shuname not in user:
            print('用户名未被注册')
        else:
            shuxpass = input('请输入旧密码')
            if user[shuname] != shuxpass:
                print('输入的密码有误')
            else:
                xpass = input('请输入新密码')

                from defchar import user111

                if xpass == shuxpass:
                        print('新密码与旧密码不能一致')

                elif user111(xpass):
                    user[shuname] = xpass

                    user.update()
                    f = open('user.json', 'w', encoding='utf-8')  # 以写的方式打开文件
                    json.dump(user, f, ensure_ascii=False)
                    f.close()  # 关闭文件
                    print('修改成功')
                    user[shuname] = xpass

                else:
                    print('密码必须包括大、小写字母.数字.其它,以上四种至少三种')

                    # 写入数据
                    user.update()
                    f = open('user.json', 'w', encoding='utf-8')  # 以写的方式打开文件
                    json.dump(user, f, ensure_ascii=False)
                    f.close()  # 关闭文件

    # 删除用户
    elif shu == '4':
        shusname = input('请输入用户名')
        if len(shusname) < 6 or len(shusname) > 20:
            print('用户名长度必须在6-20位之间')
        elif shusname not in user:
            print('用户名未被注册')
        else:
            shuspass = input('请输入密码')
            if user[shusname] != shuspass:
                print('输入的密码有误')
            else:
                user.pop(shusname)
                print('删除成功')

                # 写入数据
                user.update()
                f = open('user.json', 'w', encoding='utf-8')  # 以写的方式打开文件
                json.dump(user, f, ensure_ascii=False)
                f.close()  # 关闭文件
    else:
        print('输入的指令有误')
